#ifndef __MYQUEUE_H__
#define __MYQUEUE_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "common.h"

// 定义队列的最大容量
#define QUEUE_MAX_SIZE      0		//不限制
//#define QUEUE_MAX_SIZE      500

// 队列节点结构体
typedef struct QueueNode {
    unsigned char *buf;              // 存储数据的缓冲区指针
    int usec_delay;			//发送延时
    unsigned short addr;	//地址
    struct QueueNode *next; // 指向下一个节点
} QueueNode;

// 队列结构体
typedef struct {
    QueueNode *front; // 队头指针
    QueueNode *rear;  // 队尾指针
    int size;         // 当前队列大小
    int capacity;     // 队列容量（可选，如果不需要限制容量，可以设为0）
} Queue;


// 初始化队列
extern void queue_init(Queue *q, int capacity);
// 检查队列是否为空
extern bool queue_is_empty(Queue *q);
// 检查队列是否已满（如果设置了容量）
extern bool queue_is_full(Queue *q);
// 入队：新节点加入队尾
extern bool enqueue(Queue *q, QueueNode *new_node);
// 入队：新节点加入队头
extern bool enqueue_head(Queue *q, QueueNode *new_node);
// 出队：从队列中取出buf指针
extern QueueNode *dequeue(Queue *q);
// 释放队列内存（但不释放buf指针指向的内存）
extern void queue_free(Queue *q);
// 打印队列内容（用于调试）
extern void queue_print(Queue *q);

#ifdef __cplusplus
}
#endif

#endif
